interface IApiExtend {
  getArrayByExcelFile(file: File, callback: typeof Callback, limitSize?: number): void;// 获取对应Excel文件内容的数组，limitSize不传则为10*1024*1024

  createTablePageObj(page?: number, pageSize?: number, pageTotal?: number): ITablePageObj;// 创建表格页码组件的数据操作对象

  downloadFile(url: string, param?: object | null): void; // 下载文件

  getLocation(isShowLoading: boolean, param: ILocation, callback: typeof Callback): void;// 获取当前位置
}

interface IApi extends IApiExtend {
  request: any;// 业务指令的处理对象

  demand: any; // 资源指令的处理对象

  getApp(): any;// 全局缓存的处理对象

  log(tag: any, msg?: any): void;// 打印日志，对外版本会进行隐藏

  isDebugMode(): boolean;// 是否为开发版本，返回true则为开发版本

  getCurrentPlatform(): string;// 获取当前运行的平台，返回"web"、"alipay"、"wx"、"wechat"、"union"、"zkpark"、"zkroad"

  checkData(data: any, type: string | CheckType): boolean;// 检查数据是否合法

  getFormatTime(data: any, format: string): string// 获取时间，单位秒，"yyyy年MM月dd日HH小时mm分钟ss秒"

  getFormatTimeByLen(data: any, format: string): string// 获取时间差，单位秒，"dd天HH小时mm分钟ss秒"

  getTimeNumber(data: any): number// 获取时间戳，单位秒

  getDateByType(data: any, type?: string): Date | null// 获取Date，"start"（00:00:00）、"end"（23:59:59），不传则为"none"

  toPrice(data: any, ratio?: any): number// 四舍五入的价格 精确到小数点的位数，不传则为2

  toFloorPrice(data: any, ratio?: any): number// 四舍不五入的价格 精确到小数点的位数，不传则为2

  getUrlSuffixObj(url: string | undefined | string): object | null;// 获取Url后缀的对象

  getHtmlStyleObj(style: string | undefined | string): object | null;// 获取Html的Style的对象

  setAccountCache(key: string, value?: any): void;// 设置本地数据，相同key则覆盖数据，value传undefined或null则移除对应的数据

  getAccountCache(key: string): any;// 根据key获取本地数据

  clearAccountCache(): void;// 清除本地数据

  createInputObj(obj?: any): IInputObj;// 创建输入组件、选择组件、对话框组件的数据操作对象

  createAsynHandler(): IAsynHandler;// 异步设置和获取的操作对象

  toast(msg: any): void;// 显示提示框

  showLoading(msg?: string): void;// 显示加载框，需手动调用hideLoading进行隐藏

  hideLoading(): void;// 隐藏加载框

  showModal(param: IModal, callback?: typeof Callback): void;// 显示提示对话框

  getWindowWidth(): number;// 获取窗口的宽度，返回像素px

  getWindowHeight(): number;// 获取窗口的高度，返回像素px

  setPageTitle(title: string): void;// 设置当前页面的标题

  jumpPage(dest: string, param?: object | null, isFinish?: boolean): void;// 跳转到下一个页面

  finishPage(backPageNum?: number): void;// 关闭页面，backPageNum不传则返回上一页

  getPageParam(): object | null;// 获取上一个页面的传参

  getUrl(isShowLoading: boolean, url: string, param?: object | null, withoutAccount?: boolean, timeout?: number, linkId?: string): Promise<any>;// 发起get请求

  postUrl(isShowLoading: boolean, url: string, param?: object | null, withoutAccount?: boolean, timeout?: number, linkId?: string): Promise<any>;// 发起post请求

  deleteUrl(isShowLoading: boolean, url: string, param?: object | null, withoutAccount?: boolean, timeout?: number, linkId?: string): Promise<any>;// 发起delete请求

  putUrl(isShowLoading: boolean, url: string, param?: object | null, withoutAccount?: boolean, timeout?: number, linkId?: string): Promise<any>;// 发起put请求

  uploadFile(isShowLoading: boolean, url: string, fileName: string, filePath: string, formData: FormData): Promise<any>;// 发起上传文件请求

  loadScript(src: string, callback: typeof Callback): void;// 加载script模块

  setClipboardData(text: string, callback?: typeof Callback): void;// 设置剪贴板的内容

  getClipboardData(callback: typeof Callback): void;// 获取剪贴板的内容

  getAccount(callback: typeof AccountCallback): void;// 获取我的code和token

  getAccountCodeSync(): string;// 获取我的code，只返回本地数据

  getAccountTokenSync(): string;// 获取我的token，只返回本地数据

  getMyNameSync(): string;// 获取我的名字，只返回本地数据

  getMyIconSync(): string;// 获取我的头像，只返回本地数据

  getMyPhoneSync(): string;// 获取我的手机号，只返回本地数据
}


import Engine from "./engine/engineLoader";
import { Callback, AccountCallback, CheckType, IModal, IInputObj, IAsynHandler } from "./bean";
import { ILocation, ITablePageObj } from "./beanType";
let api = Engine();
export default api;